#include <iostream>
using namespace std;
#define maxSize 5
typedef struct stack
{
    int data[maxSize];
    int top;
}SqStack;
/*栈初始化*/
void InitStack(SqStack &s){
    s.top=-1;
}
/*判断栈空*/
bool StackEmpty(SqStack &s){
    if(s.top==-1){
        return true;
    }
    else{
        return false;
    }
}
/*入栈*/
bool Push(SqStack &s,int x){
    if(s.top==maxSize-1){
        return false;//栈满，报错
    }
    s.data[++s.top]=x;
    return true;
}
/*出栈*/
bool Pop(SqStack &s,int &x){
    if(s.top==-1){
        return false;//栈空，报错
    }
    x=s.data[s.top--];
    return true;
}
/*读栈顶元素*/
int GetTop(SqStack &s,int &x){
    if(s.top==-1){
        return false;//栈空，报错
    }
    x=s.data[s.top];
    return true;
}
int main()
{
    SqStack t;
    InitStack(t);
    int a[5]={1,2,3,4,5};
    int b,c;
    for(int i=0;i<5;i++){
        Push(t,a[i]);
    }
    GetTop(t,b);
    Pop(t,c);
    GetTop(t,b);
    Pop(t,c);
    GetTop(t,b);
    Pop(t,c);
}